最近学习《深入理解Java虚拟机》,书中第一章便是手动编译JDK,可书中使用的OpenJDK 7版本比较老旧,笔者便结合书本与博客开始手动编译OpenJDK 10,不得不说最后成功显示带有自己名字的JDK版本时,挺自豪的~
环境准备
- macOS系统版本:10.13.6。
AppStore中安装Xcode,笔者使用版本为:9.4.1。
由于macOS没有官方的软件包管理器,使用HomeBrew填补。
安装FileType「一个免费提供的软件库,用于渲染字体」。命令:
1
$ brew install freetype
安装ccache「编译器缓存,可以提高Xcode的编译速度」。命令:
1
$ brew install ccache
OpenJDK 10源码下载,并解压至无中文的目录。
安装JDK 10.0.2「因OpenJDK中的大部分代码使用Java自身实现的,因此需要一个可用的JDK,官方称之为『Bootstrap JDK』,官网中现支持下载JDK 10.0.2和JDK 8u181两个版本,笔者曾使用JDK 8u181无法编译,提示版本过低,故此采用JDK 10.0.2」。
构建
进入解压后的OpenJDK目录,笔者的地址为
/Users/wuzhi/JVM/openjdk
。设定语言。
1
$ export LANG=C
如果之前设置了JAVA_HOME和CLASSPATH两个环境变量,编译前需取消,否则会编译报错。
1
2$ unset JAVA_HAME
$ unset CLASSPATH未取消环境变量时,编译报错如下。
更改配置,
--with-boot-jdk
为Bootstrap JDK地址,--disable-warnings-as-errors
可以忽略警告,--with-target-bits=64
指定JVM为64位。1
$ bash configure --with-boot-jdk=/Library/Java/JavaVirtualMachines/jdk-10.0.2.jdk/Contents/Home --disable-warnings-as-errors --with-target-bits=64
若配置成功,提示信息如下。
开始编译。
1
$ make images
编译过程中,CPU将会爆满,全量编译整个OpenJDK大概耗时12分钟,由于机器配置不同可能会导致编译时长有所差异。若编译成功,提示信息如下。
查看编译结果,位于
OpenJDK目录/build/macosx-x86_64-normal-server-release/
,如下。查看编译结果的版本信息。
1
2
3
4$ ./build/macosx-x86_64-normal-server-slowdebug/jdk/bin/java -version
openjdk version "10-internal" 2018-03-20
OpenJDK Runtime Environment (build 10-internal+0-adhoc.wuzhi.openjdk)
OpenJDK 64-Bit Server VM (build 10-internal+0-adhoc.wuzhi.openjdk, mixed mode)